package com.tedu.api.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;


/**
 * listFiles(接口：Filter)  重载
 * 作用：按照“指定规则”获取对应文件/文件夹
 * Filter接口---专门给listFiles方法提供：过滤文件夹或者文件【指定规则】
 * accept()从每个File的文件中判断，拿到【具体逻辑】的文件夹
 * 需求：获取 API 项目下 所有子项【文件和文件夹】，获取src文件
 *     指定规则：验证是s开头就是src
 * 作业2：FileFilter接口按照 匿名内部类 方式 实现，功能如上需求！
 * 接口：FileFilter ff=new FileFilter(){ accept() }
 * 提示：创建FileFilter接口--匿名内部类
 */
public class FilterAPI {
    //主方法：./ 路径指定根级
    public static void main(String[] args) throws IOException {
        //创建File文件类:获取当前 API 文件夹 路径：./API
        //匿名内部类：替换子类继承FileFilter
        /*FileFilter my=new FileFilter() {
            public boolean accept(File pathname) {
                return pathname.getName().startsWith("s");
            }
        };*/
        //2.获取文件夹下的所有“子项：文件夹下包括所有文件和文件夹”
        File[] subs=new File("."+File.separator+"API").listFiles((pathname)->{return pathname.getName().startsWith("s");});
        //3.打印子项下所有名字
       /* for (int i=0;i<subs.length;i++){//i 下标 从0开始
            System.out.println("所有文件和文件夹名："+subs[i].getName());
        }*/
        //增强for for(接收类型 f:){}
        for (File f:new File("."+File.separator+"API").listFiles((pathname)->{return pathname.getName().startsWith("s");})){
            System.out.println("遍历后过滤完成："+f);
        }
        //作业2:
        FileFilter ff=new FileFilter() {
            public boolean accept(File pathname) {
                String str=pathname.getName();
                return str.startsWith("s");
            }
        };
        /*File[] file1=file.listFiles(ff);
        for (int i=0;i<file1.length;i++){
            System.out.println("所有文件和文件夹名："+file1[i].getName());
        }*/
    }
    //单元测试：./ 路径指定父级
//    @Test
//    public void test01() throws IOException {
//            //创建File文件类:获取当前 API 文件夹 路径：./
//            File file=new File("."+File.separator);
//            System.out.println(file.getCanonicalPath());
//    }
}
